docs(pm-skill): the sixth readings increment — seven measured platform facts, ceiling 388 → 395 (ruled) - #16615
Merged
Conversation
…m facts, ceiling 388 -> 395 (ruled)
Seven deduplicated readings land as one rule line each in the readings ledger,
and the ceiling row moves to the landed count under the STANDING one-file
exception (pm-dispatch SKILL.md), recorded as a `ruledRaises` record rather than
a decision card, exactly as that exception directs.
The lines, each written in the file's voice and placed in the section that owns
its subject:
- MCP's read limiter and write limiter are independent of each other, measured in
both polarities, so one side's refusal does not predict the other's.
- A control word's hit does not license a different term's zero: the same
document is reachable by one term and empty by another in the same batch, so
the defect is term-shaped, not document-shaped.
- A listing that returns a bare array and no total cannot announce its own
truncation, so its zero is not a reading — the neighbouring row already covers
the full-first-page case, this one states the response-shape property.
- An existence question goes to a single-point 200/404 read
(`GET /repos/{o}/{r}/branches/BRANCH`) or `git ls-remote --heads`, never to a
listing page.
- `issue_write` clears every field it is not passed, assignees included — the
labels half was already on the ledger, this is the other half.
- Assignability is a repo+account property that moves mid-session, with its
204/404 probe and the read-back rule.
- A standalone marker line is dropped by the COMMENT read path with the bytes
still in storage, so its absence is not evidence of a write-side strip.
Ceiling 388 -> 395 at the landed count, headroom 0, same convention; `was` is
untouched and no other ceiling moves.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
…place the untested row with the reading The row proposed a mechanism for the attribution-footer variation and marked it 未实测 with an explicit refusal to compress the observation into a law: the tool synthesises a footer only for a body that carries none. Measured twice now, on two different PRs, in the direction that mechanism predicts: a body edit sent through the MCP `update_pull_request` wrapper with no footer of its own reads back, through the same channel, with NO footer at all — no synthesised block, nothing appended. The mechanism is false, so the row that proposed it is replaced BY the reading, at the same line count. The neighbouring rows are untouched, including the one that refuses to generalise any single form across channels and actions, which still governs this line.⚠️ This disagrees with `AGENTS.md`'s edit-side reading (session-URL footer survives, the platform appends a bare block). AGENTS.md is outside this flight's file surface; the conflict is reported rather than silently resolved. Ceiling unchanged at 395: this correction is line-neutral and buys nothing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
Collaborator
Author
维护者速读(终稿 · skills 席,2026-09-07T14:2xZ)
Generated by Claude Code |
os-zhuang
approved these changes
Sep 7, 2026
os-zhuang
marked this pull request as ready for review
September 7, 2026 14:23
os-zhuang
enabled auto-merge
September 7, 2026 14:23
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #16566
Refs #14265
Refs #14014
Refs #13561
Refs #13326
Session (durable attribution in prose, because a PR body's trailing block does not survive an edit): https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
Seven deduplicated readings land as one rule line each in
references/platform-readings.md, one further reading REPLACES a row its own measurement falsified (line-neutral), and the ceiling row inscripts/pm/check-skill-line-ratchet.mjsmoves 388 to 395 — the landed count — under the STANDING one-file exception in pm-dispatch SKILL.md, recorded as aruledRaisesrecord rather than a decision card, which is what that exception directs.wasis untouched, no other ceiling row moves, and nothing is paid by re-wrapping.Dedup ledger
Every candidate was checked against the ledger BEFORE it was written, by reading the neighbouring rows rather than by title.
git ls-remote --heads, never a listing pageissue_writeclears every field it is not passed, assignees includedissue_readtruncates a long body silently; REST returns it wholepull_request_read get, neverissue_read get_labelsget_labelsmiss makes the mandated read-modify-write strip concurrent labelsreferences/contract-review.md— outside this flight's file surface; its ownRestart-when:names the contract-review row, not the readings row/rate_limitreading exists" and states the hold stays until then; that reading is not on #15275, which is still openCounts — candidates 13 · landed 7 · already-present 4 · refused 1 · hold-not-met 1. Eight lines written, seven of them new: 388 to 395. No line is deleted to pay for them, nothing is re-wrapped, and the one replaced row is replaced by its own refutation at equal line count.
Restart-when:lines name corpus audit #13597, and #13597 is still OPEN (read this run). Landing them rests on the dispatch's ruling that Phase 2's ruling on the readings row was executed by the rules-only rewrite, not on the literal text of those cards. #11742 is the one card whose NEWEST transition names a different, unmet gate, so it is held back.The measurement candidate 3 required
Run on this PR's own body, through the same channel the fleet writes with, before the line was written.
create_pull_request)update_pull_request,draft: true)⇒ Second independent reading, agreeing with the one taken on PR #16591. The ledger row that proposed the opposite mechanism ("the tool synthesises a footer only for a body carrying none") was explicitly marked 未实测; it is now measured, and false, so it is replaced by the reading.
AGENTS.md, whose edit-side sentence says the session-URL footer survives and the platform appends a bare block under whatever you send. AGENTS.md is outside this flight's declared file surface, so the conflict is reported here rather than silently resolved — it is the seat's call whether AGENTS.md's edit-side sentence now needs the same correction.The line #11742 would carry, if the seat rules its hold met
- MCP 变更 PR 的限流窗实测 ≥18 分钟,退避按 ~20 分钟;拒时主池读 idle ⇒ 按速率不按预算。Gates
All 38 families derived by
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackfrom the real change set were run on the final headca1fba4d2, and reconciled with--ran:pnpm --filter @objectstack/lint run check:doc-formula-expressionsfirst exited 3 (PREREQUISITE NOT MET —@objectstack/formulaunbuilt), which is NOT MEASURED rather than red; its dependency closure was built under the shared verify lock and it then exited 0. Repo-widepnpm lint(eslint . --no-inline-config) exits 0 on the same head, run under the lock rather than narrowed.node scripts/pm/check-governed-merges.mjs --teston the two paths exits 3 (GOVERNED, one path on the register). A driver-less bare clone (merge.os-regen.driverabsent, its config read exits 1) merge-trees this head againstorigin/maincleanly, and no open PR touches either file.维护者速读(草稿)
改了什么 —— 平台读数事实表新增七行规则(一事一行),另有一行被它自己的实测推翻、原地替换(行数不增);棘轮上限 388 → 395(落地行数),并按常设例外在
ruledRaises里记一条引用裁决原文的记录。没有删任何既有内容付账,没有折行重排,was与其它文件上限一律未动。为什么改 —— 七条都是席位这周真实踩过的坑:把截断的第一页读成"不存在"(差点让一个已完成的实现被重做)、单字段更新把 assignees 清空、控制词命中就以为空结果可信、指派静默失败、评论里的标记读不到就误判成写侧被删。事实表是这些教训唯一的家;写不进去,下一个席位照样踩。第八行更值钱:它把一条"未实测的猜想"换成了实测结论,那条猜想本身就会误导人。
风险与代价(含回滚) —— 代价是 skills 语料每席会话多读七行。风险低:全是描述性事实行,不改任何流程判据、不改门禁行为。回滚 = revert 本 PR 两个提交,账本行与棘轮行同笔回到 388,无残留状态。真正的判断点是那八行是否真的不重复 —— 上面的去重表逐条给了理由,请按理由核,不按标题核。另一处要拍板的是 AGENTS.md 的编辑侧那句话现在与实测冲突,改不改在本 PR 面外。
席位意见 —— (留空,待复核席位填写)
你要做的 —— 逐条核实去重表(尤其四张 already-present 与一张 hold-not-met 的判定)、确认抬上限走的是常设例外而不是需要新决策卡、决定 AGENTS.md 那句是否另开一卡,然后人工合并。⛔ 本 PR 不翻 ready、不入队、不挂 auto-merge。
Generated by Claude Code